package com.zhongke.cotrun.model.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhongke.cotrun.model.validator.UserValidator;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
* 作者 yhl
* 日期 2020-01-05 14:02:19
* 描述 
*/
@ApiModel(value="com.zhongke.cotrun.model.pojo.ProjectInfo",description="项目技术基础信息")
@Data
@Getter
@Setter
public class ProjectInfo extends PageQueryRequest implements Serializable {
    /**
     * 用户id
     */
    @ApiModelProperty(value="项目id",name="projectId",example = "101")
    protected Integer projectId;

    /**
     * 创建项目的用户id(管理员id)
     */
    @ApiModelProperty(value="创建项目的用户id(管理员id)",name="createId",example = "101")
    @NotNull(message = "创建/更新用户id不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected Long createId;

    /**
     * 项目/成果名称
     */
    @ApiModelProperty(value="项目/成果名称",name="projectName",example = "abc")
    @NotNull(message = "项目/成果名称不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected String projectName;

    /**
     * 应用领域
     */
    @ApiModelProperty(value="应用领域",name="useArea",example = "[1,2]")
    @NotNull(message = "应用领域不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<Integer> useArea;

    /**
     * 技能领域
     */
    @ApiModelProperty(value="技能领域",name="skillArea",example = "[1,2]")
    @NotNull(message = "技能领域不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<Integer> skillArea;

    /**
     * 估值：单位-万元
     */
    @ApiModelProperty(value="估值：单位-万元",name="valuation")
    @NotNull(message = "估值不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected BigDecimal valuation;

    /**
     * 估值方式：1 面议，2 已估
     */
    @ApiModelProperty(value="估值方式：1 面议 ，2 已估",name="valuationType", example = "1",allowableValues = "1,2")
    @NotNull(message = "估值方式不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected Integer valuationType;

    /**
     * 成果类型
     */
    @ApiModelProperty(value="成果类型",name="fruitType",example = "[1,2]")
    @NotNull(message = "成果类型不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<Integer> fruitType;

    /**
     * 当前阶段
     */
    @ApiModelProperty(value="当前阶段",name="processType",example = "[1,2]" )
    @NotNull(message = "当前阶段不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<Integer> processType;

    /**
     * 融资阶段
     */
    @ApiModelProperty(value="融资阶段",name="financingType",example = "[1,2]")
    @NotNull(message = "融资阶段不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<Integer> financingType;

    /**
     * 合作形式：多选
     */
    @ApiModelProperty(value="合作形式：数组给后端",name="cooperateType",example = "[\"aaa\"]")
    @NotNull(message = "合作形式不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<String> cooperateType;

    /**
     * 您的诉求：多选
     */
    @ApiModelProperty(value="您的诉求：多选",name="yourWant",example = "[\"aaa\"]")
    @NotNull(message = "您的诉求不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<String> yourWant;

    /**
     * 您的诉求描述
     */
    @ApiModelProperty(value="您的诉求描述",name="yourWantContent")
    protected String yourWantContent;

    /**
     * 关键词
     */
    @ApiModelProperty(value="关键词",name="words")
    @NotNull(message = "关键词不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<String> words;

    /**
     * 单位名称
     */
    @ApiModelProperty(value="单位名称",name="companyName")
    protected String companyName;

    /**
     * 联系人姓名
     */
    @ApiModelProperty(value="联系人姓名",name="contactName")
    @NotNull(message = "联系人姓名不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected String contactName;

    /**
     * 手机号
     */
    @ApiModelProperty(value="手机号",name="phoneNumber")
    @NotNull(message = "手机号不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected String phoneNumber;

    /**
     * 邮箱地址
     */
    @ApiModelProperty(value="邮箱地址",name="email")
    @Email
    @NotNull(message = "邮箱地址不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected String email;

    /**
     * 省id
     */
    @ApiModelProperty(value="省id",name="provinceId",example = "1")
    @NotNull(message = "省id不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected Integer provinceId;

    /**
     * 城市id
     */
    @ApiModelProperty(value="城市id",name="cityId",example = "1")
    @NotNull(message = "城市id不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected Integer cityId;

    /**
     * 区域id
     */
    @ApiModelProperty(value="区域id",name="areaId",example = "1")
    @NotNull(message = "区域id不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected Integer areaId;

    /**
     * 宣传图片
     */
    @ApiModelProperty(value="宣传图片",name="photos")
    @NotNull(message = "宣传图片不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected List<String> photos;

    /**
     * 项目详情
     */
    @ApiModelProperty(value="项目详情",name="detail")
    @NotNull(message = "项目详情不能为空",groups = {UserValidator.UpDate.class,UserValidator.InSet.class})
    protected String detail;

    /**
     * 团队介绍
     */
    @ApiModelProperty(value="团队介绍",name="desc")
    protected String teamDesc;

    /**
     * 证明材料，多个url
     */
    @ApiModelProperty(value="证明材料，多个url",name="proveUrl")
    protected List<String> proveUrl;

    /**
     * 创建时间
     */
    @ApiModelProperty(value="创建时间",name="createTime")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    protected Date createTime;

    /**
     * 最后更新时间
     */
    @ApiModelProperty(value="最后更新时间",name="updateTime")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    protected Date updateTime;

    /**
     * 备注
     */
    @ApiModelProperty(value="备注",name="comment")
    protected String comment;

    /**
     * 状态 0:正常
     */
    @ApiModelProperty(value="状态 0:正常 1:下线",name="state",example = "1")
    protected Integer state;

    @ApiModelProperty(value="审核状态 0:待审核 1:审核通过 2:审核驳回 4:下线",name="approvalState",example = "1")
    protected Integer approvalState;

    @ApiModelProperty(value="审核意见(驳回时需要填写)",name="approvalOpinion")
    protected String approvalOpinion;

    @ApiModelProperty(value="审核人",name="approvalUser")
    protected String approvalUser;

    @ApiModelProperty(value="审核人",name="approvalTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    protected Date approvalTime;

    @ApiModelProperty(value="删除标记 0:正常 1:删除",name="delFlag",example = "0")
    protected Integer delFlag;

    @ApiModelProperty(value="是否推荐 0:否 1:是",name="isRecommend",example = "0")
    protected Integer isRecommend;

    @ApiModelProperty(value="设置推荐时间",name="recommendTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    protected Date recommendTime;

    @ApiModelProperty(value="开始视频",name="startVideo")
    protected String startVideo;

    @ApiModelProperty(value="结束视频",name="endVideo")
    protected String endVideo;

}